Conditions | 58 |
Total Lines | 242 |
Code Lines | 152 |
Lines | 70 |
Ratio | 28.93 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
Complex classes like directive.range.js ➔ RangeConstructor often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
1 | |||
7 | function RangeConstructor($scope, $element, $attrs) { |
||
8 | if(Core.GetConfig().debugLog.DirectiveFlow) |
||
9 | console.log("1 Range - RangeConstructor()"); |
||
|
|||
10 | var constructor = this; |
||
11 | var $ctrl = $scope.rangeCtrl; |
||
12 | var tagName = $element[0].tagName.toLowerCase(); |
||
13 | |||
14 | View Code Duplication | var DirectiveProperties = (function () { |
|
15 | var multi; |
||
16 | |||
17 | function findMultiable(){ |
||
18 | var object = $attrs.multi; |
||
19 | if(typeof(object) != "undefined") |
||
20 | return true; |
||
21 | else |
||
22 | return false; |
||
23 | } |
||
24 | |||
25 | return { |
||
26 | getMultiable: function () { |
||
27 | if (!multi) { |
||
28 | multi = findMultiable(); |
||
29 | } |
||
30 | $scope.multi = multi; |
||
31 | return multi; |
||
32 | } |
||
33 | }; |
||
34 | })(); |
||
35 | |||
36 | function TryToCallInitDirective(){ |
||
37 | if(typeof $scope.InitDirective == "function"){ |
||
38 | $scope.InitDirective($scope, $element, $attrs, $ctrl); |
||
39 | }else{ |
||
40 | $scope.DefaultInitDirective(); |
||
41 | } |
||
42 | } |
||
43 | $scope.DefaultInitDirective = function(){ |
||
44 | if(Core.GetConfig().debugLog.DirectiveFlow) |
||
45 | console.log("scope.$id:"+$scope.$id+", may implement $scope.InitDirective() function in webapge"); |
||
46 | } |
||
47 | |||
48 | // this getter only for editbox |
||
49 | $scope.IsRange = function() |
||
50 | { |
||
51 | return true; |
||
52 | } |
||
53 | |||
54 | $scope.GetInitRange = function(){ |
||
55 | var range = {start: "ALL", end: ""}; |
||
56 | |||
57 | return range; |
||
58 | } |
||
59 | |||
60 | function InitializeRange() { |
||
61 | DirectiveProperties.getMultiable(); |
||
62 | var range = {start: "ALL", end: "", isAll: true}; |
||
63 | $ctrl.ngModel = jQuery.extend(true, {}, range); |
||
64 | |||
65 | $scope.isStartBound = false; |
||
66 | $scope.isEndBound = false; |
||
67 | $scope.isActivatedByEditbox = false; |
||
68 | } |
||
69 | $scope.Initialize = function(){ |
||
70 | $scope.InitScope(); |
||
71 | if(typeof $scope.EventListener == "function"){ |
||
72 | $scope.EventListener($scope, $element, $attrs, $ctrl); |
||
73 | }else{ |
||
74 | EventListener(); |
||
75 | } |
||
76 | TryToCallInitDirective(); |
||
77 | } |
||
78 | $scope.InitScope = function(){ |
||
79 | InitializeRange(); |
||
80 | } |
||
81 | |||
82 | function InitDirective(){ |
||
83 | if(Core.GetConfig().debugLog.DirectiveFlow) |
||
84 | console.log("scope.$id:"+$scope.$id+", may implement $scope.InitDirective() function in webapge"); |
||
85 | } |
||
86 | function EventListener(){ |
||
87 | if(Core.GetConfig().debugLog.DirectiveFlow) |
||
88 | console.log("scope.$id:"+$scope.$id+", may implement $scope.EventListener() function in webapge"); |
||
89 | } |
||
90 | |||
91 | // chagneRagne = [start | end] |
||
92 | View Code Duplication | function RangeStringChange(changeRange, ctrlModel){ |
|
93 | var isLocaleCompareSupport = localeCompareSupportsLocales(); |
||
94 | |||
95 | var strStart = ctrlModel.start; |
||
96 | var strEnd = ctrlModel.end; |
||
97 | var stringDifference = 0; |
||
98 | |||
99 | // if user change the start value |
||
100 | if(strStart != "ALL"){ |
||
101 | $ctrl.ngModel.isAll = false; |
||
102 | } |
||
103 | |||
104 | // string comparison, find the strStart position of strEnd |
||
105 | if(isLocaleCompareSupport){ |
||
106 | stringDifference = strStart.localeCompare(strEnd); |
||
107 | }else{ |
||
108 | if(strStart < strEnd) |
||
109 | stringDifference = -1; |
||
110 | if(strEnd < strStart) |
||
111 | stringDifference = 1; |
||
112 | if(strStart == strEnd) |
||
113 | stringDifference = 0; |
||
114 | } |
||
115 | |||
116 | if(changeRange == "start"){ |
||
117 | |||
118 | if(stringDifference > 0) |
||
119 | { |
||
120 | strEnd = strStart |
||
121 | } |
||
122 | if(stringDifference < 0) |
||
123 | { |
||
124 | |||
125 | } |
||
126 | }else if(changeRange == "end"){ |
||
127 | if(stringDifference > 0) |
||
128 | { |
||
129 | strStart = strEnd |
||
130 | } |
||
131 | if(stringDifference < 0) |
||
132 | { |
||
133 | if(strStart == "") |
||
134 | strStart = strEnd |
||
135 | } |
||
136 | } |
||
137 | |||
138 | ctrlModel.start = strStart; |
||
139 | ctrlModel.end = strEnd; |
||
140 | } |
||
141 | |||
142 | function localeCompareSupportsLocales() { |
||
143 | try { |
||
144 | 'foo'.localeCompare('bar', 'i'); |
||
145 | } catch (e) { |
||
146 | return e.name === 'RangeError'; |
||
147 | } |
||
148 | return false; |
||
149 | } |
||
150 | |||
151 | $scope.ToggleRangeInAll = function(){ |
||
152 | $scope.SetInAllRange($ctrl.ngModel.isAll); |
||
153 | } |
||
154 | |||
155 | $scope.SetStartOrEndBound = function(setRange){ |
||
156 | if(setRange == "start"){ |
||
157 | $scope.isStartBound = true; |
||
158 | }else if(setRange == "end"){ |
||
159 | $scope.isEndBound = true; |
||
160 | } |
||
161 | } |
||
162 | |||
163 | $scope.GetIsStartEndBound = function(){ |
||
164 | return $scope.GetIsStartBound() && $scope.GetIsEndBound(); |
||
165 | } |
||
166 | |||
167 | $scope.GetIsStartBound = function(){ |
||
168 | return $scope.isStartBound; |
||
169 | } |
||
170 | |||
171 | $scope.GetIsEndBound = function(){ |
||
172 | return $scope.isEndBound; |
||
173 | } |
||
174 | |||
175 | $scope.GetIsActivate = function(){ |
||
176 | return $scope.isActivatedByEditbox; |
||
177 | } |
||
178 | |||
179 | $scope.SetIsActivate = function(){ |
||
180 | $scope.isActivatedByEditbox = true; |
||
181 | } |
||
182 | |||
183 | $scope.SetInAllRange = function(isCheckAll){ |
||
184 | $ctrl.ngModel.isAll = isCheckAll; |
||
185 | } |
||
186 | |||
187 | // this setter only for editbox |
||
188 | $scope.SetRange = function(rangeType, value){ |
||
189 | console.dir("rangeType:"+rangeType) |
||
190 | console.dir("value:"+value) |
||
191 | if(rangeType == "start"){ |
||
192 | $ctrl.ngModel.start = value; |
||
193 | }else if(rangeType == "end"){ |
||
194 | $ctrl.ngModel.end = value; |
||
195 | } |
||
196 | RangeStringChange(rangeType, $ctrl.ngModel) |
||
197 | } |
||
198 | |||
199 | $scope.GetRange = function(){ |
||
200 | var rangeList = []; |
||
201 | var range = rangeList[0] = {start: "", end: ""}; |
||
202 | |||
203 | range.start = $ctrl.ngModel.start; |
||
204 | range.end = $ctrl.ngModel.end; |
||
205 | |||
206 | return range; |
||
207 | } |
||
208 | $scope.IsLockEndControl = function(){ |
||
209 | var isLock = false; |
||
210 | var range = $scope.GetRange(); |
||
211 | if(range.start == "ALL"){ |
||
212 | isLock = true; |
||
213 | } |
||
214 | return isLock; |
||
215 | } |
||
216 | |||
217 | $scope.CheckAllRange = function(test){ |
||
218 | console.dir("CheckAllRange() function") |
||
219 | } |
||
220 | |||
221 | $scope.$watch( |
||
222 | function() { return $ctrl.ngModel.isAll; }, |
||
223 | function(newValue, oldValue) { |
||
224 | var isCheckAll = newValue; |
||
225 | console.trace() |
||
226 | console.dir($ctrl.ngModel) |
||
227 | console.dir("newValue:"+newValue) |
||
228 | console.dir("oldValue:"+oldValue) |
||
229 | if(isCheckAll){ |
||
230 | $ctrl.ngModel.start = "ALL" |
||
231 | $ctrl.ngModel.end = "" |
||
232 | |||
233 | var editBtn = $element.find('button[ng-click="OpenPageView()"]').last(); |
||
234 | editBtn.prop('disabled', true); |
||
235 | } |
||
236 | else{ |
||
237 | if($ctrl.ngModel.start == "ALL") |
||
238 | $ctrl.ngModel.start = "" |
||
239 | |||
240 | var editBtn = $element.find('button[ng-click="OpenPageView()"]').last(); |
||
241 | editBtn.prop('disabled', false); |
||
242 | } |
||
243 | }, |
||
244 | true |
||
245 | ); |
||
246 | |||
247 | //$scope.Initialize(); |
||
248 | } |
||
249 | function templateFunction(tElement, tAttrs) { |
||
295 | }]); |